{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import igraph as ig\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成网格图, 随机整数权重在1到20\n",
    "random.seed(0)\n",
    "g = ig.Graph.Lattice([5, 5], circular=False)\n",
    "g.es[\"weight\"] = [random.randint(1, 20) for _ in g.es]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum edge weight sum: 201\n"
     ]
    }
   ],
   "source": [
    "# 计算最小生成树\n",
    "mst_edges = g.spanning_tree(weights=g.es[\"weight\"], return_tree=False)\n",
    "# 打印最小生成树的权重合\n",
    "print(\"Minimum edge weight sum:\", sum(g.es[mst_edges][\"weight\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化图并将最小生成树边的部分加亮显示\n",
    "g.es[\"color\"] = \"lightgray\"\n",
    "g.es[mst_edges][\"color\"] = \"midnightblue\"\n",
    "g.es[\"width\"] = 1.0\n",
    "g.es[mst_edges][\"width\"] = 3.0\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ig.plot(\n",
    "    g,\n",
    "    target=ax,\n",
    "    layout=\"grid\",\n",
    "    vertex_color=\"lightblue\",\n",
    "    edge_width=g.es[\"width\"],\n",
    "    edge_label=g.es[\"weight\"],\n",
    "    edge_background=\"white\",\n",
    ")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.10.6 ('py310')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "49ec5068d4d6d3736c39d3918a16f1ca551a23384109b69898c01c2015d1370c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
